package fr.afcepf.ai89.lagrandebouffe.business;

import java.util.List;

import fr.afcepf.ai89.lagrandebouffe.entity.Plat;

/**
 * Définition des méthodes métier de l'application.
 * <code>
 *  <strong>L'application sait :</strong>
 *  <ul>
 *      <li>ajouter un {@link Plat} qui n'existe pas.</li>
 *      <li>...</li>
 * @author stagiaire
 *
 */
public interface IBusinessPlat {

    /**
     * Méthode permettant l'ajout d'un {@link Plat}
     * dans la BDD.
     * @param lePlat : le {@link Plat} à ajouter.
     * @return
     * <code>
     * <ul>
     *  <li><strong>la clé primaire</strong><br />
     *  si le {@link Plat} est bien ajouté.</li>
     *  <li>
     *      <strong>null</strong><br />
     *      dans le cas où l'ajout ne marche pas.
     *      </li>
     * </ul>
     * </code>
     */
    Integer ajouter(Plat plat);
    
    /**
     * Méthode permettant la suppression d'un {@link Plat}
     * dans la BDD.
     * @param lePlat : le {@link Plat} à manger.
     * @return
     * <code>
     * <ul>
     *  <li><strong>true</strong><br />
     *  si le {@link Plat} est bien mangé.</li>
     *  <li>
     *      <strong>false</strong><br />
     *      si on a toujours faim.
     *      </li>
     * </ul>
     * </code>
     */
    boolean manger(Plat plat);
    
    /**
     * Méthode permettant de rechercher des {@link Plat}
     * par libelle
     * @param libelle : le libelle recherche dans le {@link Plat}.
     * @return une liste de {@link Plat}.
     * <code>
     *  <ul>
     *      <li>une liste vide si aucun {@link Plat} ne correspond
     *      au libellé demandé.</li>
     *      <li>une liste contenant tous les {@link Plat} dont le
     *      libellé contient le paramètre libellé du plat recherché.</li>
     *  </ul>
     * </code>
     */
    List<Plat> rechercher(String libelle);

}
